.. _软件简介:
************************************
软件简介
************************************

DS-PAW是Device Studio平台下一款第一性原理密度泛函计算程序,使用平面波作为基函数组,使用投影缀加平面波方法构造赝势。本程序能广泛应用于材料科学领域,开展例如金属、半导体、绝缘体、表面、磁性、非磁性、锂电等材料的计算研究;
能够精确预测材料的电子分布;能够进行原子几何结构优化等多种功能的计算。本程序性能稳定,在intel芯片及国产海光芯片下经过百万案例的内部测试,包括各项功能及并行效率。

.. _1.1 安装说明:

install安装说明
==========================================================================

------------------------------------------------------------------------------------------------------------------------------------------------------------------

.. note::

    1. DS-PAW 使用cmake编译,要求cmake版本≥2.8
    2. 建议使用Intel编译器编译


.. _icc:
==============================================================================
Intel 编译器编译MKL版本(推荐使用)
==============================================================================
.. code-block:: bash
    :linenos:

    cd DS-PAW
    mkdir build
    cd build

    cmake .. -DCMAKE_CXX_COMPILER=icc -DCMAKE_INSTALL_PREFIX=install_path/ -DDSPAW_USE_MKL=ON

    make -jN #N为编译使用的核数
    make install

.. note::

    1. Intel 编译器版本要≥2017
    2. **CMAKE_CXX_COMPILER** 用于指定c++编译器位置,**CMAKE_INSTALL_PREFIX** 用于指定DS-PAW的安装目录
    3. 若未成功查找到MPI编译器,可设置 **-DMPI_CXX_COMPILER=mpiicc** 来指定Intel MPI编译器位置

.. _gcc:
==============================================================================
Gcc 编译器编译openblas版本
==============================================================================
.. code-block:: bash
    :linenos:

    cd DS-PAW
    mkdir build
    cd build

    cmake .. -DCMAKE_CXX_COMPILER=icc -DCMAKE_INSTALL_PREFIX=install_path/ -DOPENBLAS_PATH=openblas_path/

    make -jN #N为编译使用的核数
    make install

.. note::

    1. gcc 编译器版本要≥4.8
    2. 系统中需存在MPI编译器,如openmpi、mpich等
    3. **CMAKE_CXX_COMPILER** 用于指定c++编译器位置,**CMAKE_INSTALL_PREFIX** 用于指定DS-PAW的安装目录,**OPENBLAS_PATH** 用于指定openblas目录、访问 `openblas文档 <https://github.com/xianyi/OpenBLAS/wiki/Installation-Guide>`_
    4. 若未成功查找到MPI编译器,可设置 **-DMPI_CXX_COMPILER=mpicxx** 来指定MPI编译器位置


.. _1.2 命令说明:

command命令说明
==========================================================================

------------------------------------------------------------------------------------------------------------------------------------------------------------------

.. _ 命令列表:

==============================================================================
list命令列表
==============================================================================

--------------------------------------------------------------------------------------------------------------------------------------------

- lic_
- info_
- mpi_
- mpiargs_
- pob_

--------------------------------------------------------------------------------------------------------------------------------------------




.. _ 命令详细描述:

==============================================================================
detail命令详细描述
==============================================================================

--------------------------------------------------------------------------------------------------------------------------------------------

.. _lic:

**命令名称:** :guilabel:`-lic`

**使用方法:** :guilabel:`-lic` 用于生成序列号,在DS-PAW安装目录下执行命令::guilabel:`DS-PAW -lic` 即可得到LicenseNumber.txt文件,该文件用于license的申请


---------------------------------------------------------------------------------------------------------------------------------------------

.. _info:

**命令名称:** :guilabel:`-info`

**使用方法:** :guilabel:`-info` 用于查看软件版权信息,执行命令::guilabel:`DS-PAW -info`


---------------------------------------------------------------------------------------------------------------------------------------------

.. _mpi:

**命令名称:** :guilabel:`-mpi xxx`

**使用方法:** :guilabel:`-mpi` 用于指定mpi执行程序的位置,如: :guilabel:`-mpi mpirun`



---------------------------------------------------------------------------------------------------------------------------------------------

.. _mpiargs:

**命令名称:** :guilabel:`-mpiargs xxx`

**使用方法:** :guilabel:`-mpiargs` 用于指定mpi运行参数,如::guilabel:`-mpiargs "-np 16"`


---------------------------------------------------------------------------------------------------------------------------------------------

.. _pob:

**命令名称:** :guilabel:`-pob`

**使用方法:** :guilabel:`-pob` 用于并行计算时合理分配核数加快运行速度,为 *parallel over band* 的简写,可在提交命令中添加此关键词

---------------------------------------------------------------------------------------------------------------------------------------------



.. _1.3 程序运行:

run程序运行
==========================================================================

------------------------------------------------------------------------------------------------------------------------------------------------------------------

.. _ 命令提交运行:

==============================================================================
submit命令提交运行
==============================================================================

--------------------------------------------------------------------------------------------------------------------------------------------

设置环境变量:

.. code-block:: bash

    export PATH={DS-PAW INSTALLPATH}/bin:$PATH


串行执行:

.. code-block:: bash

    DS-PAW input.in

并行执行:

.. code-block:: bash

    DS-PAW -mpi mpirun -mpiargs "-np 16" input.in -pob

.. _ 脚本提交运行:

==============================================================================
script脚本提交运行
==============================================================================

--------------------------------------------------------------------------------------------------------------------------------------------

若使用排队系统(例如PBS、slurm等)提交任务,只要配置完成相应的 ``.pbs`` 或 ``.slurm`` 脚本,之后使用 :guilabel:`qsub xx.pbs`  或 :guilabel:`sbatch xx.slurm`  提交任务即可。